Flash memory is stored in blocks. When a change must be made to the data in a block, no matter how minor the change may be, the entire block must be rewritten. On the one hand, the rewriting of flash memory blocks every time a single change must be made both consumes significant time and also places great demands on system resources. On the other hand, to buffer minor changes for each of the blocks in a dedicated RAM memory space and thus rewrite blocks only when a significant number of changes have been accumulated, would require enormous processing and memory resources that are simply not available in operating systems, especially when a very large number of blocks are affected by a very large number of minor changes over a short period. Systems and methods that would help resolve this conflict could potentially have a major beneficial influence on the performance of a data processing system that includes flash memory.